package com.neuedu.first;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTestDriver {
    public static void main(String[] args) {
        test01();
    }

    /**
     * Map接口实现类：HashMap
     */

    private static void test01(){
        Map map0=new HashMap();
        //添加元素
        map0.put("zhangsan","男");
        map0.put("lisi","女");
        map0.put("lisi","男");
        map0.put(null,"女");
        map0.put("wangwu","男");

        //遍历
        //System.out.println("zhangsan："+map0.get("zhangsan"));

        System.out.println("1、将Map集合转换为EntrySet集合进行遍历(增强型for循环):");

        //从map中获取所有的键值对集合（Set结构）
        Set entrySet=map0.entrySet();
        //此时map的遍历转换为对EntrySet的遍历（）
        for (Object en:entrySet) {
            //强制类型转换（向下溯型）
            Map.Entry entry=(Map.Entry)en;
            System.out.println(entry.getKey()+": "+entry.getValue());
        }

        System.out.println("将Map集合转换为EntrySet集合进行遍历(迭代器):");
        //获取entrySet的迭代器对象
        Iterator it=entrySet.iterator();
        while (it.hasNext()){
            Map.Entry entry=(Map.Entry)it.next();
            System.out.println(entry.getKey()+": "+entry.getValue());
        }

        System.out.println("将Map集合转换为EntrySet集合进行遍历(迭代器):");
        //将map转为keySet集合进行遍历；
        //通过遍历map中取出的key集合，然后使用get（key）方法获取与之对应的calue值，达到遍历
        //获取Map的keySet集合对象
        Set setKey=map0.keySet();
        //转换为对keySet的遍历
        //获取entrySet的迭代器对象
        Iterator it1=entrySet.iterator();
        while (it1.hasNext()){
            Object key=it1.next();
            //通过key从map中取出与key对应的value值
            System.out.println(key+": "+map0.get(key));
        }

    }
}
